package com.sz.wu.controller;


import com.alibaba.fastjson.JSON;
import com.sz.wu.model.Product;
import com.sz.wu.model.UserProduct;
import com.sz.wu.model.UserCar;
import com.sz.wu.service.UserCarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.List;

//购物车的controller
@Controller
@RequestMapping("usercar")
public class UserCarController {
    @Autowired
    private UserCarService userCarService;
    @Autowired
    private StringRedisTemplate redisTemplate;

    //加入购物车
    @RequestMapping("addCar")
    @ResponseBody
    public UserCar addcar(String id, @RequestBody Product product) {
        //首先判断用户是否是第一次购买
        String s = redisTemplate.opsForValue().get("1");
        UserCar userCar = new UserCar();
        UserProduct userProduct = new UserProduct(
                product.getUid(),
                product.getUname(),
                product.getPrice(),
                product.getUnum(),
                product.getUimg(),
                1, product.getPrice()
        );
        if (s == null) {
            //用户第一次购买
            System.out.println("新买");
            HashMap<Integer, UserProduct> map = new HashMap<>();
            map.put(product.getUid(), userProduct);
            userCar.setMap(map);

        } else {
            //用户加购
            System.out.println("缓存");
            userCar = JSON.parseObject(s, UserCar.class);
            if (userCar.getMap().containsKey(product.getUid())) {
                //如果找到相同id,说明用户在加购相同产品,在原来的数量上加一即可
                userProduct = userCar.getMap().get(product.getUid());
                userProduct.setPsc(userProduct.getPsc() + 1);//在原来的基础上加一
            } else {
                //用户在购买别的产品
                userCar.getMap().put(product.getUid(), userProduct);
            }

        }
        //把他放到redis中
        userCar.getMap();
        System.out.println("已经走完了");
        String json = JSON.toJSONString(userCar);
        redisTemplate.opsForValue().set("1", json);
        return userCar;
    }


    //显示用户的购物车
    @RequestMapping("showcar")
    public List<UserProduct> showcar() {
        return null;
    }
}
